package org.budo.mybatis.dao.statement.builder;

import org.apache.ibatis.session.Configuration;

/**
 * @author limingwei
 */
public interface StatementBuilder {
    public void buildSaveStatement(Configuration configuration, Class<?> entityType);

    public void buildSaveBatchStatement(Configuration configuration, Class<?> entityType);

    public void buildUpdateStatement(Configuration configuration, Class<?> entityType);

    public void buildDeleteByIdStatement(Configuration configuration, Class<?> entityType);

    public void buildDeleteByIdsStatement(Configuration configuration, Class<?> entityType);

    public void buildSaveIgnoreNullStatement(Configuration configuration, Class<?> entityType);

    public void buildUpdateColumnsStatement(Configuration configuration, Class<?> entityType);

    public void buildUpdateIgnoreNullStatement(Configuration configuration, Class<?> entityType);

    public void buildFindByExampleStatement(Configuration configuration, Class<?> entityType);

    public void buildListByColumnsStatement(Configuration configuration, Class<?> entityType);

    public void buildFindBySqlStatement(Configuration configuration, Class<?> entityType, String sql);

    public void buildListByIdsStatement(Configuration configuration, Class<?> entityType);

    public void buildListBySqlStatement(Configuration configuration, Class<?> entityType, String sql);

    public void buildFindByIdStatement(Configuration configuration, Class<?> entityType);

    public void buildDeleteBySqlStatement(Configuration configuration, String sql);

    public void buildUpdateBySqlStatement(Configuration configuration, String sql);

    public void buildFindByColumnsStatement(Configuration configuration, Class<?> entityType);

    public String sqlStatementId(String sql);

    public Boolean hasStatement(Configuration configuration, String statementId);

    public String assertExistsResultMapReturnAllId(Configuration configuration, Class<?> entityType);

    public void buildListBySqlWithResultMapIdStatement(Configuration configuration, String resultMapId, String sql);

    public void buildFindBySqlWithResultMapIdStatement(Configuration configuration, String resultMapId, String sql);
}